/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Bdd;

import java.sql.*;
import java.util.ArrayList;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

/**
 *
 * @author kazanova
 */
public class AdminRepository {

    ////////////////
    // Constantes //
    ////////////////
    public static final int CONNECTION_OK = 0;
    public static final int CONNECTION_LOG_ERROR = 1;
    public static final int CONNECTION_MP_ERROR = 2;
    public static final int CONNECTION_NET_ERROR = 3;    

    ///////////////
    // Attributs //
    ///////////////

    protected String connectionUrl;
    protected String connectionUser;
    protected String connectionPassword;
    protected Statement stmt;
    protected ResultSet rs;
    protected Connection dataBaseConnection;

    /////////////////////////////
    // Constructeur par défaut //
    /////////////////////////////

    public AdminRepository() {
        connectionUrl = Repository.DATABASE_DEFAULT_URL;
        connectionUser = Repository.DATABASE_DEFAULT_USER;
        connectionPassword = Repository.DATABASE_DEFAULT_PSWD;
    }

    ////////////////////////
    // Methodes publiques //
    ////////////////////////

    public int tryToConnect(String login, String pass) {
        System.out.println("Tentative de recherche de login/pass");
        ResultSet result = null;
        Statement requete = null;
        try {
            // Requete de selection de login
            openConnection();
            requete = dataBaseConnection.createStatement();
            result = requete.executeQuery("SELECT COUNT(id) FROM Administrateur where login='"+login+"'");
            if(!result.next()) {
                throw new SQLException("Aucune donnée dans la table Administrateur");
            }
            // On regarde le resultat
            System.out.println("Result 1 : " + result.getInt(1));
            if (result.getInt(1) != 1) {
                // Si il n'existe pas un unique login avec cette valeur
                System.out.println("Login non trouvé : " + login);
                // On coupe la connexion
                requete.close();
                closeConnection();
                // On retourne l'erreur à la vue
                return 2;
            }
            else {
                // Si le login est bien présent, on continue l'execution
                System.out.println("Login trouvé : " + login);
            }

        } catch (SQLException e) {
            System.out.println("ERREUR log MySql : " + e);
            closeConnection();
            return 3;
        }
        try {
            // Requete de selection de login
            result = requete.executeQuery("SELECT COUNT(id) FROM Administrateur where login='"+login+"' AND mp='"+pass+"'");
            if(!result.next()) {
                throw new SQLException("Aucune donnée dans la table Administrateur");
            }
            // On regarde le resultat
            System.out.println("Result 1 : " + result.getInt(1));
            if (result.getInt(1) != 1) {
                // Si le login et le mot de pass ne correspondes pas
                System.out.println("Pass non trouvé pour " + login + " : " + pass);
                // On coupe la connexion
                requete.close();
                closeConnection();
                // On retourne l'erreur à la vue
                return 1;
            } else {
                // Connexion réussie, on ferme celle ci et on retourne 0
                System.out.println("Pass trouvé pour " + login + " : " + pass+"\nConnection ....");
                requete.close();
                closeConnection();
                return 0;
            }
        } catch (SQLException e) {
            System.out.println("ERREUR pass MySql : " + e);
            closeConnection();
            return 3;
        }
    }

    // Gestion des connexions
    public void openConnection() {
        try {
            this.dataBaseConnection = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
            this.stmt = dataBaseConnection.createStatement();
            System.out.println("Connexion réussie");
        } catch (SQLException e) {
            System.err.println("ERR0R MySql : " + e);
        }
    }

    public void closeConnection() {
        try {
            this.dataBaseConnection.close();
        } catch (SQLException e) {
            System.out.println("ERREUR MySql : " + e);
        }
    }

}
